﻿<!DOCTYPE HTML>
<html>
  <head>
    <!-- meta name="viewport" content="width=device-width, height=device-height, user-scalable=yes, initial-scale=2.0, maximum-scale=4.0, minimum-scale=1.0" / -->
    <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8"> <!-- ISO-8859-1 -->
    <title>Cordova</title>
    <link rel="stylesheet" href="master.css" type="text/css" media="screen"/>


    <script type="text/javascript" charset="utf-8" src="cordova-1.7.0.js"></script>


<script type="text/javascript" charset="utf-8">

    var deviceReady = false;
    var persistent_root;

    var getFileSystemRoot = (function () {

        var onError = function (error) {
            console.log('unable to retrieve file system: ' + error.code);
        };

        // one-time retrieval of the root file system entry
        if (typeof persistent_root === 'undefined') {
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
                function (fileSystem) {
                    persistent_root = fileSystem.root;
                }, onError);
        }

        // public function returns private root entry
        return persistent_root;

    });


    /**
    * Gets file or directory
    */
    function getEntry(isFile, onSuccess, options) {

        var root = getFileSystemRoot();
        //TODO
        console.log(typeof root);
        var filePath = document.getElementById('filePath');

        var onGetEntryError = function (fileError) {
        console.log("Error creating/opening file/directory: " + fileError.code);
        document.getElementById('file_status').innerHTML = "Error creating/opening file/directory: " + fileError.code;
        };

        if (isFile == true) {
            console.log('Creating file');
            root.getFile(
            filePath.value,
            options,
            onSuccess,
            onGetEntryError);
        } else {
            console.log('Creating directory');
            root.getDirectory(
            filePath.value,
            options,
            onSuccess,
            onGetEntryError);
        }
    };

    /**
    * Creates or opens file/directory
    */
    function createOrOpen(isFile) {
        var onGetEntrySuccess = function (fileEntry) {
        document.getElementById('file_status').innerHTML = "isFile: " + fileEntry.isFile + "; isDirectory: " + fileEntry.isDirectory + "; name: " + fileEntry.name + "; path: " + fileEntry.fullPath;
        entry = fileEntry;
        };
        getEntry(isFile, onGetEntrySuccess, {create: true, exclusive: true});
    };

    /**
    * Check if file/directory exists
    */
    function isExists(isFile) {

        console.log("Start checking...");

        var root = getFileSystemRoot();

        var onError = function (fileError) {
            console.log("Error checking file/directory: " + fileError.code);
            document.getElementById('file_status').innerHTML = "Error checking file/directory: " + fileError.code;
        };

        var onSuccess = function (isExist) {
            document.getElementById('file_status').innerHTML = "is exists: " + isExist;
        };

        var filePath = document.getElementById('filePath');

        if (isFile == true) {
            console.log('check if file exists');
            navigator.fileMgr.testFileExists(
            filePath.value,
            onSuccess,
            onError);
        } else {
            navigator.fileMgr.testDirectoryExists(
            filePath.value,
            onSuccess,
            onError);
        }
    };



    /**
    * Remove file or directory
    */
    function remove(isFile) {

        var onSuccess = function (fileEntry) {

            var onRemoveError = function (fileError) {
            console.log("Error removing file/directory: " + fileError.code);
            document.getElementById('file_status').innerHTML = "Error removing file/directory: " + fileError.code;
            };

            var onRemoveSuccess = function () {
                document.getElementById('file_status').innerHTML = "file/directory was removed";
            };

            fileEntry.remove(onRemoveSuccess, onRemoveError);
        };

        getEntry(isFile, onSuccess, {create: false});

    };

    /**
    * Writes data in file
    */
    function writeInFile() {
        var onSuccess = function (fileEntry) {

            var writer = new FileWriter(fileEntry);

            writer.onwrite = function (evt) {
                console.log("End writing...");
                document.getElementById('file_status').innerHTML = writer.length + " bytes was written";
            };
            writer.onerror = function (evt) {
                console.log("writing error");
                document.getElementById('file_status').innerHTML = "writing error: " + evt.target.error;
            };
            writer.write(textToWrite.value);
            console.log("End writing");
        };
        console.log("Start getting entry");
        getEntry(true, onSuccess, { create: false });
    };

    /**
    * Reads file as base64 string
    */
    function readAsBase64() {
        var onSuccess = function (fileEntry) {
            var reader = new FileReader();
            reader.onloadend = function (evt) {
                console.log("read success");
                document.getElementById('file_status').innerHTML = evt.target.result;
            };
            reader.onerror = function (evt) {
                console.log("read error");
                document.getElementById('file_status').innerHTML = "read error: " + evt.target.error;
            };

            reader.readAsDataURL(fileEntry);
        };

        console.log("Start getting entry");
        getEntry(true, onSuccess, { create: false });

    };

    /**
    * Uploads selected file to specified server
    */
    function uploadFile() {

        var onSuccess = function (fileUploadResult) {
            console.log("Upload success");
            document.getElementById('file_status').innerHTML = "Code: " + fileUploadResult.responseCode + "; Sent = " + fileUploadResult.bytesSent + "; Response:  " + fileUploadResult.response;
        };

        var onError = function (error) {
            document.getElementById('file_status').innerHTML = "Upload error: " + error.code;
        };

        console.log("Set upload parameters");
        var options = new FileUploadOptions();

        options.fileKey = "file";
        options.fileName = "newFile.txt";
        options.mimeType = "text/plain";
        var filePath = document.getElementById('filePath').value;
        var server = document.getElementById('server').value;

        var params = new Object();
        params.key1 = "value1";
        params.key2 = "value2";
        options.params = params;

        var fileTransfer = new FileTransfer();

        fileTransfer.upload(filePath, server, onSuccess, onError, options);
    };

    /**
    * Function called when page has finished loading.
    */
    function init() {
        document.addEventListener("deviceready", function () {
            deviceReady = true;
            console.log("Device=" + device.platform + " " + device.version);
            getFileSystemRoot();
        }, false);
        window.setTimeout(function () {
            if (!deviceReady) {
                alert("Error: Cordova did not initialize.  Demo will not run correctly.");
            }
        }, 1000);
    }

</script>

  </head>
  <body onLoad="init();" id="stage" class="theme">

    <h1>File</h1>
    <div id="info">
        <span class='tb-label'>Enter file/directory name here:</span> <span id="Span1"></span>
        <input type="text" id="filePath" style="width:250px;height:20px;"/>
        <br/>
        <span class='tb-label'>Enter text to write in file :</span> <span id="Span2"></span>
        <input type="text" id="textToWrite" style="width:250px;height:20px;"/>
        <br/>
        <span class='tb-label'>Enter URL to upload file to: </span> <span id="Span3"></span>
        <input type="text" id="server" value='http://posttestserver.com/post.php?dir=phonegapTest' style="width:250px;height:20px;"/>
        <br/>
        Result: <span id="file_status"></span>
    </div>
    <h2>Action</h2>
    <a href="#" class="btn large" onclick="createOrOpen(true);">Create/Open file</a>
    <a href="#" class="btn large" onclick="createOrOpen(false);">Create/Open directory</a>
    <a href="#" class="btn large" onclick="isExists(true);">Check if file exists</a>
    <a href="#" class="btn large" onclick="isExists(false);">Check if directory exists</a>
    <a href="#" class="btn large" onclick="remove(true);">Remove file</a>
    <a href="#" class="btn large" onclick="remove(false);">Remove directory</a>
    <a href="#" class="btn large" onclick="writeInFile();">Write in file (type text in the second field)</a>
    <a href="#" class="btn large" onclick="readAsBase64();">Read file as base64</a>
    <a href="#" class="btn large" onclick="uploadFile();">Upload file</a>
    <h2> </h2><a href="index.html" class="backBtn">Back</a>
  </body>
</html>